package com.springcloud.auth.utils;


import com.springcloud.auth.config.OauthConfig;
import com.springcloud.commom.utils.SpringContextUtils;
import com.springcloud.auth.vo.TokenVo;
import com.springcloud.commom.utils.RedisUtil;

import java.util.HashMap;
import java.util.Map;


/**
 * 在线用户管理
 */
public class UserManageUtil {

    public static Map<String, TokenVo> userMap = new HashMap<>();

    public static void setToken(String userId, TokenVo tokenVo) {
        userMap.put(userId, tokenVo);
    }

    public static TokenVo getToken(String userId) {
        return userMap.get(userId);
    }

    public static void removeToken(String userId) {
        userMap.remove(userId);
    }

    public static boolean has(String userId) {
        return userMap.containsKey(userId);
    }

    public static void removeTokenRedis(String userId) {
        RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);

        //踢出旧用户
        TokenVo oldTokenVo = UserManageUtil.getToken(userId);

        //redeis删掉旧用户凭证
        redisUtil.del(OauthConfig.AUTH_ACCESS_TOKEN + oldTokenVo.getAcToken());
        redisUtil.del(OauthConfig.AUTH_REFRESH_TOKEN + oldTokenVo.getReToken());

        //移除用户
        removeToken(userId);
    }
}
